﻿using System;

namespace PotatoSoft.CSharpDataStruct.LinnearList
{
    //动态数组演示
    public class ArrayList
    {
        #region 成员变量
        private const int _defaultCapacity = 4;//默认初始容量
        private object[] _items;//固定数组
        private int _size;//数组大小
        private const object[] _defaultItem = new object[0];//默认数组
        #endregion

        #region 构造函数
        /// <summary>
        /// 默认构造函数
        /// 初始化一个空的动态数组
        /// </summary>
        public ArrayList()
        {
            this._items = _defaultItem;//为了防止初始化动态数据后访问数组的count属性出错
        }
        /// <summary>
        /// 初始化一个大小为size的的动态数组
        /// </summary>
        /// <param name="capacity">动态数组的大小</param>
        public ArrayList(int capacity)
        {
            //防止初始无效
            if (capacity < 0)
                throw new ArgumentOutOfRangeException("capacity", "不能为动态数据初始化为负数的大小");
            this._items = new object[capacity];
        }
        #endregion

        #region 公共方法
        /// <summary>
        /// 添加项
        /// </summary>
        /// <param name="value">任意项</param>
        public void Add(object value)
        {
            if (this._size > this._items.Length)
            {
                //扩容
            }
            this._items[_size] = value;
        }
        /// <summary>
        /// 插入项
        /// </summary>
        /// <param name="index">插入索引位置</param>
        /// <param name="value">插入的项</param>
        public void Insert(int index, object value)
        {
            //
        }
        /// <summary>
        /// 移除指定索引项
        /// </summary>
        /// <param name="index">索引位置</param>
        public void RemoveAt(int index)
        {
        }
        #endregion

        #region 私有方法

        #endregion
        //属性
        //索引
    }
}
